package xyz.scoder;

public abstract class PizzaStore {
    /**
     * 工厂方法 功能等同于之前的简单工厂
     *  工厂方法将超类中的代码和实际创建具体产品的代码分隔开来
     * @param type pizza 类型
     * @return 制作出的pizza
     */
    protected abstract Pizza createPizza(String type);

    public Pizza orderPizza(String type) {
        Pizza pizza = null;

        pizza = createPizza(type);
        if (null != pizza) {
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
        }

        return pizza;
    }
}
